#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include "iniconfig.h"
#include "networkthread.h"
#include "serialthread.h"

#include <QMainWindow>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QMutex>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT
    
public:
    static QString statusName[30];

    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

    bool initConfig(const char *inipath);
    int initThread(void);
    bool initConnect(void);
    bool startThread(void);
    bool initWindows(void);

    void keyPressEvent(QKeyEvent *k);
    
private:
    bool openMysql(int count);
    QSqlQuery *quertMysql(bool returnback, QString &sql);
    void freeQuery(QSqlQuery *query);
    void startMysqlRecordLoop(int timeout);
    void initTabWidget(void);
    void keybordResultsReport(QString &msg);
    void countOne(void);

    Ui::MainWindow *ui;                 // UI界面对象

    QSqlDatabase mysql;

    QTimer *timerClock;                 // 时钟定时器
    QTimer *timerMysql;                 // 时钟定时器

    QMutex lock;

    INIConfig *ini;                     // ini参数对象

    NetworkThread *nt;                  // 网络线程
    SerialThread *st;                   // 串口线程

    int insertCount;
    int timeSyncRemain;

    bool isRecording;
    bool serialStatus;
    bool networkStstus;

signals:
    void UI2Network_StartSignal(bool status);

private slots:
    void slot_RefreshClock(void);
    void slot_NetworkStatus(int status);
    void slot_HeftValue(double);
    void slot_SerialStatus(int status);
    void slot_MysqlRecordLoop(void);
};

#endif // MAINWINDOW_H
